home *** CD-ROM | disk | FTP | other *** search
- (* Just one of the (dozens) of possible ways of doing the old Tron game in *)
- (* Pascal... Have fun! *)
- (* Two players only. Cursor keys, and O, P, Q, R *)
- (* Freeware - 1994 - Luis Evaristo Beda Netto Marques da Fonseca *)
- (* Thunderball Software Inc. *)
-
- Program Tron;
-
- Uses Graph,Crt;
-
- Var Cpos1,Lpos1,Cpos2,Lpos2,Npos1,Npos2,Winner,Vel,Ngames:Integer;
- Conta,Bluep,Yellowp:Integer;
- Out:Boolean;
- Exitgame:Char;
-
- Procedure Initg; {initialize graphics}
- var gd,gm:integer;
- Begin
- Gd:=detect;
- Initgraph(Gd,Gm,'C:\TP\BGI');
- End;
-
- Procedure InitVar(Var Cpos1,Lpos1,Cpos2,Lpos2,Npos1,Npos2:Integer;Var out:Boolean);
- Begin {initilize game variables}
- Npos1:=3;
- Npos2:=1;
- Lpos1:=240;
- Lpos2:=240;
- Cpos1:=370;
- Cpos2:=270;
- out:=False;
- End;
-
- Procedure PressKey(Var Npos1,Npos2:Integer);
- Var Ch:Char;
- Num:Integer;
- Begin
- If Keypressed then {get the key pressed and}
- Ch:=ReadKey; {change course accordingly}
- if Ch=#0 then
- begin
- Ch:=ReadKey;
- Num:=Ord(Ch);
- Case Num of
- 75:If Npos1<>3 then Npos1:=1;
- 72:If Npos1<>4 then Npos1:=2;
- 77:If Npos1<>1 then Npos1:=3;
- 80:If Npos1<>2 then Npos1:=4;
- End;
- End
- Else
- Begin
- Num:=Ord(Ch);
- Case Num of
- 111:If Npos2<>3 then Npos2:=1;
- 113:If Npos2<>4 then Npos2:=2;
- 112:If Npos2<>1 then Npos2:=3;
- 97:If Npos2<>2 then Npos2:=4;
- End;
- end;
- End;
-
- Procedure ScrnOutput(Npos1,Npos2:integer;Var Lpos1,Lpos2,Cpos1,Cpos2,Winner,Vel:Integer; Var out:Boolean);
- Var Color:Word;
- Begin
- Case Npos1 of {write output at screen and}
- 1:Cpos1:=Cpos1-1; {actualize position variables}
- 2:Lpos1:=Lpos1-1;
- 3:Cpos1:=Cpos1+1;
- 4:Lpos1:=Lpos1+1;
- End;
- Color:=GetPixel(Cpos1,Lpos1);
- If Color<>0 then
- Begin
- out:=true;
- winner:=2;
- End;
- Color:=Cyan;
- PutPixel(Cpos1,Lpos1,Color);
- Case Npos2 of
- 1:Cpos2:=Cpos2-1;
- 2:Lpos2:=Lpos2-1;
- 3:Cpos2:=Cpos2+1;
- 4:Lpos2:=Lpos2+1;
- End;
- Color:=GetPixel(Cpos2,Lpos2);
- If Color<>0 then
- Begin
- out:=true;
- winner:=1;
- End;
- Color:=Yellow;
- PutPixel(Cpos2,Lpos2,Color);
- Delay(Vel);
- End;
-
- Begin
- exitgame:='Y';
- While Upcase(exitgame)='Y' do
- Begin
- yellowp:=0;
- bluep:=0;
- Clrscr;
- Writeln('Choose speed (1-very fast to 100-really slow):');
- Readln(Vel);
- Writeln('Choose number of games:');
- Readln(ngames);
- if not odd(ngames) then
- begin
- writeln('Only odd numbers are accepted. Adding one.');
- inc(ngames);
- readln;
- end;
- For Conta:=1 to ngames do
- Begin
- Initg;
- InitVar(Cpos1,Lpos1,Cpos2,Lpos2,Npos1,Npos2,out);
- SetColor(Blue);
- Rectangle(0,0,639,479);
- While out=False do
- Begin
- Presskey(Npos1,Npos2);
- ScrnOutput(Npos1,Npos2,Lpos1,Lpos2,Cpos1,Cpos2,winner,Vel,out);
- End;
- Clrscr;
- If winner=1 then
- bluep:=bluep+1
- else
- yellowp:=yellowp+1;
- Closegraph;
- End;
- Write('And the winner is the ');
- if bluep>yellowp then
- Write('blue')
- else
- Write('yellow');
- writeln(' player!');
- Write('New game? (Y/N): ');
- Readln(exitgame);
- End;
- End.